package com.ncui.wisdomLearn.biz.user.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ncui.wisdomLearn.api.dto.UserDTO;
import com.ncui.wisdomLearn.api.entity.User;
import com.ncui.wisdomLearn.api.vo.UserVO;

/**
 * 用户表(User)表服务接口
 *
 * @author lvlele
 * @since 2025-01-03 00:05:13
 */
public interface UserService extends IService<User> {
    /**
     * 新增用户
     *
     * @param userDTO 用户信息
     * @return 操作结果
     */
    Boolean createUser(UserDTO userDTO);

    /**
     * 删除用户
     *
     * @param userId 用户ID
     * @return 操作结果
     */
    Boolean deleteUser(Long userId);

    /**
     * 修改用户信息
     *
     * @param userDTO 用户信息
     * @return 操作结果
     */
    Boolean updateUser(UserDTO userDTO);

    /**
     * 根据id查询用户
     *
     * @param userId 用户ID
     * @return 用户信息
     */
    UserVO getUserById(Long userId);

    /**
     * 分页查询用户
     *
     * @param page 分页参数
     * @param userDTO 查询条件
     * @return 用户列表
     */
    Page<UserVO> getUserPage(Page<User> page, UserDTO userDTO);

    /**
     * 根据用户名查询用户
     *
     * @param username 用户名
     * @return 用户信息
     */
    UserVO getUserByUsername(String username);

    /**
     * 修改用户状态
     *
     * @param userId 用户ID
     * @param status 状态值
     * @return 操作结果
     */
    Boolean updateUserStatus(Long userId, Integer status);

    /**
     * 重置用户密码
     *
     * @param userId 用户ID
     * @param newPassword 新密码
     * @return 操作结果
     */
    Boolean resetPassword(Long userId, String newPassword);
}

